A processing circuit may perform processing operations in units called processing threads. Each processing thread represents a different task to be performed by the processing circuit. For example, a graphics processor may execute a number of processing threads, with each thread corresponding to a particular pixel or group of pixels of an image being processed by the graphics processor.
A processing thread may require certain resources to be available to the processing circuit before it can be executed. For example, the processing circuit may require access to data in a memory or cache, or may require bandwidth to be allocated on a particular piece of hardware, in order to execute the thread. Hence, to the processing circuit waits for the required resources to become available before the thread can be processed. When multiple threads are awaiting allocation of resources, then resources which become available may be allocated to any of the pending threads. The present technique seeks to provide an efficient technique for prioritizing the allocation of resources to pending threads.